Fix for #131226, allow selection of singleton list items in multi-select
authorBill Haneman <billh@src.gnome.org>
Thu, 26 Aug 2004 14:12:31 +0000 (14:12 +0000)
committerBill Haneman <billh@src.gnome.org>
Thu, 26 Aug 2004 14:12:31 +0000 (14:12 +0000)
lists, via keyboard.  [on behalf of Padraig O'Briain]

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtktreeview.c

index e6923bfac5151985ebcfdeb96da42eff81158a50..3d05a76c2fc2fc88f9a9a91ee1fd4b90552e328a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2004-08-26  Bill Haneman <billh@gnome.org>
+
+       * gtk/gtktreeview:
+       (gtk_tree_view_move_cursor_up_down):
+       If a multi-selection list contains only one item,
+       select it on cursor_up or cursor_down.
+       Fixes bug #131226.
+       [patch from Padraig O'Briain]
+
 2004-08-26  Matthias Clasen  <mclasen@redhat.com>
 
        Make gdk_window_process_[all]_updates() respect 
index e6923bfac5151985ebcfdeb96da42eff81158a50..3d05a76c2fc2fc88f9a9a91ee1fd4b90552e328a 100644 (file)
@@ -1,3 +1,12 @@
+2004-08-26  Bill Haneman <billh@gnome.org>
+
+       * gtk/gtktreeview:
+       (gtk_tree_view_move_cursor_up_down):
+       If a multi-selection list contains only one item,
+       select it on cursor_up or cursor_down.
+       Fixes bug #131226.
+       [patch from Padraig O'Briain]
+
 2004-08-26  Matthias Clasen  <mclasen@redhat.com>
 
        Make gdk_window_process_[all]_updates() respect 
index e6923bfac5151985ebcfdeb96da42eff81158a50..3d05a76c2fc2fc88f9a9a91ee1fd4b90552e328a 100644 (file)
@@ -1,3 +1,12 @@
+2004-08-26  Bill Haneman <billh@gnome.org>
+
+       * gtk/gtktreeview:
+       (gtk_tree_view_move_cursor_up_down):
+       If a multi-selection list contains only one item,
+       select it on cursor_up or cursor_down.
+       Fixes bug #131226.
+       [patch from Padraig O'Briain]
+
 2004-08-26  Matthias Clasen  <mclasen@redhat.com>
 
        Make gdk_window_process_[all]_updates() respect 
index e6923bfac5151985ebcfdeb96da42eff81158a50..3d05a76c2fc2fc88f9a9a91ee1fd4b90552e328a 100644 (file)
@@ -1,3 +1,12 @@
+2004-08-26  Bill Haneman <billh@gnome.org>
+
+       * gtk/gtktreeview:
+       (gtk_tree_view_move_cursor_up_down):
+       If a multi-selection list contains only one item,
+       select it on cursor_up or cursor_down.
+       Fixes bug #131226.
+       [patch from Padraig O'Briain]
+
 2004-08-26  Matthias Clasen  <mclasen@redhat.com>
 
        Make gdk_window_process_[all]_updates() respect 
index 3530144ddc96c4dcea3649b3c5d49919f90b9045..e4c81feeb9316872506b6c3cc6449023b86b8d5f 100644 (file)
@@ -8378,6 +8378,31 @@ gtk_tree_view_move_cursor_up_down (GtkTreeView *tree_view,
     _gtk_rbtree_next_full (cursor_tree, cursor_node,
                           &new_cursor_tree, &new_cursor_node);
 
+  /*
+   * If the list has only one item and multi-selection is set then select
+   * the row.
+   */
+  if (tree_view->priv->selection->type == GTK_SELECTION_MULTIPLE &&
+      new_cursor_node == NULL)
+    {
+      if (count == -1)
+        _gtk_rbtree_next_full (cursor_tree, cursor_node,
+                              &new_cursor_tree, &new_cursor_node);
+      else
+        _gtk_rbtree_prev_full (cursor_tree, cursor_node,
+                              &new_cursor_tree, &new_cursor_node);
+
+      if (new_cursor_node == NULL)
+        {
+          new_cursor_node = cursor_node;
+          new_cursor_tree = cursor_tree;
+        }
+      else
+        {
+          new_cursor_node = NULL;
+        }
+    }
+
   if (new_cursor_node)
     {
       cursor_path = _gtk_tree_view_find_path (tree_view, new_cursor_tree, new_cursor_node);